// 内置数据类型：int、double、String、bool、List、Map、Set、Runes、Symbol、Object、Enum、Future、Iterable、Never、dynamic、void

// Object：除 Null 之外的所有 Dart 类的超类

// Future 和 Stream：用于异步支持

// Iterable：用于 for-in 循环和同步生成器函数

// Never：用于始终引发异常的函数

// dynamic：表示要禁用静态检查

// void：表示不使用某个值

// 如将变量声明为 num 类型，则表示该变量可以存储 int 或 double 类型的值
void main() {
  // Number
  // 整型：int
  var x = 1;
  var hex = 0xDEADBEEF;

  // 浮点型：double

  var y = 1.1;
  var exponents = 1.42e5;
  num z = 1; // x can have both int and double values
  z += 2.5;
  print(z);

  // 使用 double 声明变量，int 会被自动转换成 double
  double d = 1;
  print(d); // 1.0

  // 将字符串转成数字
  // String => int
  var one = int.parse('1');

  // String => double
  var onePointOne = double.parse('1.1');

  // int => String
  String oneAsString = 1.toString();

  // double => String
  String piAsString = 3.14159.toStringAsFixed(2);

  // Strings

  var str = 'Hello, Dart!';
  // ${expression}，字符串拼接
  var str2 = '${str.toLowerCase()}' + ' I am studying now!';
  // 多行字符串
  var str3 = '''
  Hello, Dart!
  I am studying now!
  ''';

  // Booleans
  var fullName = '';
  print(fullName.isEmpty); // true

  var hitPoints = 0;

  var iMeantToDoThis = 0 / 0;
  print(iMeantToDoThis.isNaN); // true

  var hi = 'Hi 🇩🇰';
  print(hi);
}
